package common.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import org.apache.commons.lang.RandomStringUtils;
import org.apache.commons.lang.time.DateUtils;
import org.apache.log4j.Logger;
/**
 * 
 * <p>Class       : neusoft.module.air.utils.BascUtils
 * <p>Descdription: 基础工具类
 *
 * @author  刘柳-liu-liu@neusoft.com
 * @version 1.0.0
 *<p>
 *--------------------------------------------------------------<br>
 * 修改履历：<br>
 *        <li> 2012-10-6，liu-liu@neusoft.com，创建文件；<br>
 *--------------------------------------------------------------<br>
 *</p>
 */
public class BaseUtils {
	//日志信息
	private static Logger log = Logger.getLogger(BaseUtils.class);
	/**
	 * 
	 * <p>Method ：getCurrentTimeUTC
	 * <p>Description : 返回DATE类型的UTC时间
	 *
	 * @return 
	 * @author  刘柳-liu-liu@neusoft.com
	 *<p>
	 *--------------------------------------------------------------<br>
	 * 修改履历：<br>
	 *        <li> 2012-10-6，liu-liu@neusoft.com，创建方法；<br>
	 *--------------------------------------------------------------<br>
	 *</p>
	 */
	public static Date getCurrentTimeUTC(){
		//时间格式化
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.NORMALSECONDTIME);
		//获取UTC时间所在的时区
		TimeZone zone = TimeZone.getTimeZone("GMT");
		//设置要格式化的时区
		format.setTimeZone(zone);
		//取得当前系统时间
		Long date = new Date().getTime();
		//将时间转换成UTC时间
		String gmtTime = format.format(date);
		Date utcTime = null;
		try {
			//时间格式化
			SimpleDateFormat sdf = new SimpleDateFormat(ActionConstants.NORMALSECONDTIME);
			//将时间格式化成DATE类型的时间
			utcTime = sdf.parse(gmtTime);
		} catch (ParseException e) {
			log.error(e.getMessage());
		}
		return utcTime;
	}
	/**
	 * 
	 * <p>Method ：getCurrentTimeUTCString
	 * <p>Description : 取得当前时间的String类型的UTC时间
	 *
	 * @return 
	 * @author  刘柳-liu-liu@neusoft.com
	 *<p>
	 *--------------------------------------------------------------<br>
	 * 修改履历：<br>
	 *        <li> 2012-10-6，liu-liu@neusoft.com，创建方法；<br>
	 *--------------------------------------------------------------<br>
	 *</p>
	 */
	public static String getCurrentTimeString(){
		//获取当前系统时间毫秒串
		Long date = new Date().getTime();
		//时间格式化
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.CHARSECONDTIME);
		
		//时间格式化
		String utcTime = format.format(date);
		return utcTime;
	}
	public static String getFormatCurrentTimeString(){
		//获取当前系统时间毫秒串
		Long date = new Date().getTime();
		//时间格式化
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.NORMALSECONDTIME);
		
		//时间格式化
		String utcTime = format.format(date);
		return utcTime;
	}
	
	/**
	 * 
	 * <p>Method ：getFormatCurrentTime
	 * <p>Description : 获取服务器时间
	 *
	 * @return 
	 * @author  刘柳-liu-liu@neusoft.com
	 *<p>
	 *--------------------------------------------------------------<br>
	 * 修改履历：<br>
	 *        <li> 2012-11-15，liu-liu@neusoft.com，创建方法；<br>
	 *--------------------------------------------------------------<br>
	 *</p>
	 */
	public static String getFormatCurrentTime(){
		//获取当前系统时间毫秒串
		Long date = new Date().getTime();
		//时间格式化
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.NORMALSECONDTIME);
		String currTime = format.format(date);
		return currTime;
	}
	//时间加分钟计算
	public static String addMinutes(String date,String minute) throws NumberFormatException, ParseException{
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.ORACLEINSERTTIME);
		Date finalDate = DateUtils.addMinutes(format.parse(date), Integer.valueOf(minute));
		return format.format(finalDate);
	}
	
	//带秒时间加天计算
	public static String addDays(String date,int day) throws NumberFormatException, ParseException{
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.NORMALSECONDTIME);
		Date finalDate = DateUtils.addDays(format.parse(date), day);
		return format.format(finalDate);
	}
	//时分时间格式的加天计算
	public static String addNoSecondDays(String date,int day) throws NumberFormatException, ParseException{
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.NORMALNOSECONDTIME);
		Date finalDate = DateUtils.addDays(format.parse(date), day);
		return format.format(finalDate);
	}
	
	//获取当天的开始时间
	public static String getCurrentDayStartTime(){
		Date now = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		return format.format(now);
	}
	//获取当天的最后时间
	public static String getCurrentDayEndTime(){
		Date now = new Date();
		SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
		return format.format(now)+" 23:59:59";
		
	}
	//获取32位带时间随机数
	public static String getRandomStr(){
		SimpleDateFormat format = new SimpleDateFormat(ActionConstants.CHARSECONDTIME);
		return "T"+format.format(new Date())+RandomStringUtils.random(14,false,true);
	}
}
